/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Blackjack;

import prop.Accion;
import prop.Estrategia;

/**
 *
 * @author Red
 */
public class EstrategiaBkjk extends Estrategia {

    public Accion seguro() {
        for (int i = 0; i < reglas.size(); ++i) {
            if (reglas.get(i).getAccion().getNombre().equals("seguro")) {
                if (reglas.get(i).evalua())return reglas.get(i).getAccion();
            }
        }
        return new Accion("PorDefecto");
    }

    public Accion apostar() {
        for (int i = 0; i < reglas.size(); ++i) {
            if (reglas.get(i).getAccion().getNombre().equals("apostar")) {
                if (reglas.get(i).evalua()) return reglas.get(i).getAccion();
            }
        }
        return new Accion("PorDefecto");
    }

    public Accion actuar() {
        for (int i = 0; i < reglas.size(); ++i) {
            String s = reglas.get(i).getAccion().getNombre();
            if (!s.equals("apostar") && !s.equals("seguro")) {
                JugadorBkjk jug = ((JugadorBkjk)jugador);
                if (reglas.get(i).evalua()) {
                    if (s.equals("dividir")) {
                        if (jug.getJugadasActivas() < 4
                            && jug.getJugadaActual().getMano().evaluar() > 200
                            && jug.getDinero() >= jug.getJugadaActual().getApuesta()) {
                            return reglas.get(i).getAccion();
                        }
                    }
                    else if (s.equals("doblar")) {
                        if ((jug.getJugadaActual().getMano().getNumCartas() == 2)
                            && (jug.getJugadaActual().getApuesta() <= jug.getDinero())) {
                            return reglas.get(i).getAccion();
                        }
                    }
                    else return reglas.get(i).getAccion();
                }
            }
        }
        return new Accion("PorDefecto");
    }
}
